<VirtualHost>
https://scrapbox.io/files/6021d70841586e0022b23f07.png
https://httpd.apache.org/docs/current/en/mod/core.html#virtualhost
Apache 2.3.11以降NameVirtualHostは不要
一つ以上のIPアドレスとポートの組を指定する
IPアドレスベースのバーチャルホストと名前ベースのバーチャルホストのいずれを使用する際にも使われる。
名前ベースのバーチャルホストであってもその前段階としてまずはIPアドレスベースのバーチャルホストとしてのマッチングがある。
server configコンテキストの中にだけ置くことができる。.htaccessコンテキストの中に置くことはできない。
<VirtualHost>にポート番号を指定したからと言って自動的にListenも指定したことにはならない。
ポートに対するワイルドカード
ポート番号は省略できる
ポート番号を省略することと、ポート番号に「*」と書くことは同じ
IPアドレスに対するワイルドカード
IPアドレスにワイルドカード「*」を指定できる
IPアドレスに _default_ と書くことと「*」と書くことは同じ
IPアドレスにワイルドカードを使うと、ServerNameは<VirtualHost>ディレクティブ外で設定されたものが使われる
敢えてServerNameを指定すると怒られる?
マッチングの優先度
ワイルドカードを含むマッチングよりもワイルドカードを含まないマッチングのほうが優先度が高い
同じ優先度でマッチする複数の<VirtualHost>があり得る
ServerNameの照合で特定できればそのバーチャルホストが使われる
ServerNameの照合で特定できなければIPアドレスとポート番号の組でマッチするバーチャルホスト群の最初のものが使われる
ServerName
<VirtualHost>ディレクティブの中で指定する
名前ベースのバーチャルホストでリクエストのHostヘッダの値と照合される
省略すると<VirtualHost>の外で指定されたServerNameが引き継がれる
ServerNameがどこにも書かれていないとIPアドレスから名前を推測する
hostsファイルとか?
関連ページ
<VirtualHost> Directive
An In-Depth Discussion of Virtual Host Matching
Apache Virtual Host documentation